package com.example.leetcode.trainingcamp.week6.Sunday;

/**
 * 给定两个二叉树，想象当你将它们中的一个覆盖到另一个上时，两个二叉树的一些节点便会重叠。
 *
 * 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠，那么将他们的值相加作为节点合并后的新值，否则不为 NULL 的节点将直接作为新二叉树的节点。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/merge-two-binary-trees
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Test617 {

    public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
        if (root1 == null && root2 == null) return null;
        int v1 = root1 == null ? 0:root1.val;
        int v2 = root2 == null ? 0:root2.val;
        TreeNode treeNode = new TreeNode(v1 + v2);
        if (root1 != null && root2 != null){
            treeNode.left = mergeTrees(root1.left,root2.left);
            treeNode.right = mergeTrees(root1.right,root2.right);
        }else if (root1 == null){
            treeNode.left = mergeTrees(null,root2.left);
            treeNode.right = mergeTrees(null,root2.right);
        }else {
            treeNode.left = mergeTrees(root1.left,null);
            treeNode.right = mergeTrees(root1.right,null);
        }
        return treeNode;
    }
}
